def hunt_choices(round_number, current_food, current_reputation, m,  player_reputations):
    #Initializing 'hunt_decisions' as empty list
    hunt_decisions = []
    
    # Number of current players
    n_player = len(player_reputations)
    
    # Initializing payoff matrix
    h_h = (0, 0)
    h_s = (-3, 1)
    s_h = (1, -3)
    s_s = (-2, -2)
    payoff_matrix = [[h_h, h_s], [s_h, s_s]]
    
    
    """
    If less than 5 rounds passed, then be optimistic and hunt with everybody 
    """
    if(round_number <= 5):
        for i in range(n_player):
            hunt_decisions.append('h')
        return hunt_decisions
    
    
    tot_hunt = 0
    
    
    """
    More than 5 rounds passed. So now it's time to be a bit more careful
    """  
    # Initializing my_decision to be Npne at first
    my_decision = None
    #Taking hunt decision by scrutinizing each player
    for i in range(n_player):
        # reputation of player[i] can be thought as probability of player[i] to hunt
        prob_i_hunt = player_reputations[i]
        prob_i_slack = 1.0 - prob_i_hunt
        
        # Calculating payoff if I decide to hunt
        hunt_payoff = prob_i_hunt * payoff_matrix[0][0] + prob_i_slack * payoff_matrix[0][1]
        # Calculating payoff if I decide to slack
        slack_payoff = prob_i_hunt * payoff_matrix[1][0] + prob_i_slack * payoff_matrix[1][1]
        
        # Deciding based on previous calculation 
        if(hunt_payoff > slack_payoff):
            my_decision = 'h'
            tot_hunt += 1
        else:
            my_decision = 's'
        hunt_decisions.append(my_decision)
        
    
    """
    Taking decision on Cooperation
    """
    # Taking sum of others reputation as a metric of others going to hunt
    sum = 0.0
    for i in range(n_player):
        for j in range(n_player):
            if(i != j):
                sum += player_reputations[i] * player_reputations[j] * 2.0
                sum += (1-player_reputations[i]) * player_reputations[j] * 1.0
                sum += (1-player_reputations[j]) * player_reputations[i] * 1.0
             
    if(sum + tot_hunt >= m):
        # From current condition bonus can be expected. 
        # So need to change decision to take bonus
        return hunt_decisions
    else:
        # how many hunts are expected to be left for reward
        rem = m - sum - tot_hunt
        
        # Can I afford it?
        if((rem)*(-6.0) > (2.0)*(n_player-1)):
            # If not then just return
            return hunt_decisions
        else:
            # If I can afford it, then change required hunt decisions from slack to hunt
            count = 0
            for i in range(n_player):
                if(hunt_decisions[i] == 's' and count < rem):
                    hunt_decisions[i] = 'h'
                    count += 1
            return hunt_decisions
    return hunt_decisions;

def hunt_outcomes(food_earnings):
    pass 
    
def round_end(award, m, number_hunters):
    pass